L’étude des ventes et de comportement des clients en lignes de la librairie Lapage

La réalisation du projet est divisée en plusieurs parties présentées dans les onglets suivants

Présentation du projet

  1. Objectif

Lapage - originellement une librairie physique avec plusieurs points de vente a décidé depuis 2 ans d’ouvrir un site de vente en ligne.
L’entreprise souhaite faire analyse de ses ventes en ligne : de ses points forts, ses points faibles, les comportements clients en ligne, pour pouvoir ensuite comparer avec la connaissance acquise via librairies physiques, etc.

L’analyse contient deux parties essentielles :

I. Une analyse des différents indicateurs de vente :
• Les indices et la présentation de chiffre d’affaires
• L’évolution de chiffre d’affaires dans le temps
• La tendance globale du chiffre d’affaires
• La répartition par catégorie
II. Une analyse plus ciblée sur les clients :
• La répartition du chiffre d’affaires entre les clients
• Le lien entre le genre d’un client et les catégories des livres achetés
• Le lien entre l’âge des clients et le montant total des achats, la fréquence d’achat, la taille du panier moyen et les catégories des livres achetés
  1. Description des données

L’étude est réalisée à l’aide de trois jeux de données fourni par le client :

  • Un jeu de donnée compilant l’ensemble des informations clients, et respectant le règlement général sur la protection des données (RGPD).
  • Un jeu de donnée compilant de l’ensemble des informations produits.
  • Un jeu de donnée compilant l’ensemble des transactions, et qui nous permettra de faire le lien entre tous les jeux de données.

Ces données, extraite du système de gestion du site web de l’entreprise, sont relatives à une période comprise entre le 01 MARS 2021 et le 28 FÉVRIER 2023.

Préparation des données

Ici on a présenté le traitement et la préparation de nos données pour l’analyse suivante.

  • L’importation des jeux de données
  • L’exploration des données importées
  • La vérification sur la doublication et la présence des données manquentes
  • La modification du type de la date
  • L’exploration des outliers
  • L’agrégation des données


Importation des fichiers:

  • L’information clients : “customers.csv”
  • L’information produits : “products.csv”
  • L’information transactions : “transactions.csv”

Fichier “Customers” : 5 premières lignes & Description des variables & Exploration

client_id sex birth
Length:8623 Length:8623 Min. :1929
Class :character Class :character 1st Qu.:1966
Mode :character Mode :character Median :1979
NA NA Mean :1978
NA NA 3rd Qu.:1992
NA NA Max. :2004
client_id sex birth
c_4410 f 1967
c_7839 f 1975
c_1699 f 1984
c_5961 f 1962
c_5320 m 1943

Exploration des données
Recherche des doublons

## integer(0)
## integer(0)

Vérification des valeurs de la variable ‘sex’:

## [1] "f" "m"
##      row col

Fichier “Products” : 5 premières lignes & Description des variables & Exploration

id_prod price categ
0_1421 19.99 0
0_1368 5.13 0
0_731 17.99 0
1_587 4.99 1
0_1507 3.99 0
id_prod price categ
Length:3287 Min. : -1.00 Min. :0.0000
Class :character 1st Qu.: 6.99 1st Qu.:0.0000
Mode :character Median : 13.06 Median :0.0000
NA Mean : 21.86 Mean :0.3702
NA 3rd Qu.: 22.99 3rd Qu.:1.0000
NA Max. :300.00 Max. :2.0000

Recherches des doublons

## integer(0)
## integer(0)

Ouliers dans “Products”

##     id_prod price categ
## 732     T_0    -1     0

Vérification de id_prod “T_0”

##     id_prod price categ
## 732     T_0    -1     0

Tout d’abord le prix égaux à -1 n’est pas possible. En plus, on verra plus tard que id_prod appellé ‘T_0’ correspend à une procedure de vérification du fonctionnement de systeme. Donc cela ne convient pas pour notre analyse : on enleve cette ligne.

Elimination d’outlier

##    id_prod              price            categ       
##  Length:3286        Min.   :  0.62   Min.   :0.0000  
##  Class :character   1st Qu.:  6.99   1st Qu.:0.0000  
##  Mode  :character   Median : 13.07   Median :0.0000  
##                     Mean   : 21.86   Mean   :0.3704  
##                     3rd Qu.: 22.99   3rd Qu.:1.0000  
##                     Max.   :300.00   Max.   :2.0000

Verification sur la presence id_prod = 0_2245

## [1] id_prod price   categ  
## <0 lignes> (ou 'row.names' de longueur nulle)

Fichier “Transactions” : 5 premières lignes & Description des variables & Exploration

id_prod date session_id client_id
0_1518 2022-05-20 13:21:29.043970 s_211425 c_103
1_251 2022-02-02 07:55:19.149409 s_158752 c_8534
0_1277 2022-06-18 15:44:33.155329 s_225667 c_6714
2_209 2021-06-24 04:19:29.835891 s_52962 c_6941
0_1509 2023-01-11 08:22:08.194479 s_325227 c_4232
id_prod date session_id client_id
Length:679532 Length:679532 Length:679532 Length:679532
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character

Changement de date en type ‘date’

## [1] "list"
## [1] "character"
## Warning: 200 failed to parse.

On trouve 200 valeurs non-definies :

Verification des lignes avec des dates non-definies:

Selection du produit ‘T_0’
id_prod date session_id client_id
3020 T_0 test_2021-03-01 02:30:02.237419 s_0 ct_0
5139 T_0 test_2021-03-01 02:30:02.237425 s_0 ct_0
9669 T_0 test_2021-03-01 02:30:02.237437 s_0 ct_1
10729 T_0 test_2021-03-01 02:30:02.237436 s_0 ct_0
15293 T_0 test_2021-03-01 02:30:02.237430 s_0 ct_0

On trouve que ces lignes correspendent au test ‘T_0’

## [1] "Nombre de lignes: 200 "

Elimination des lignes outliers

## [1] 200

Nombre de lignes completes

## [1] 679332
##    id_prod       date session_id  client_id 
##     679532     679332     679532     679532

Elimination des lignes avec date non-definie

##    id_prod               date                         session_id       
##  Length:679332      Min.   :2021-03-01 00:01:07.00   Length:679332     
##  Class :character   1st Qu.:2021-09-08 09:14:25.00   Class :character  
##  Mode  :character   Median :2022-03-03 07:50:20.50   Mode  :character  
##                     Mean   :2022-03-03 15:13:18.80                     
##                     3rd Qu.:2022-08-30 23:57:07.75                     
##                     Max.   :2023-02-28 23:58:30.00                     
##   client_id        
##  Length:679332     
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
##    id_prod       date session_id  client_id 
##     679332     679332     679332     679332

Recherche des doublons dans ‘transaction1’

## integer(0)

Agrégation des données de tables “Products” et “Transaction” préparés

client_id id_prod price categ date session_id sex birth
c_1 0_1448 18.94 0 2021-07-26 17:37:29 s_67467 m 1955
c_1 1_713 33.99 1 2021-11-15 20:40:00 s_120172 m 1955
c_1 0_1429 7.99 0 2021-10-15 11:28:24 s_105105 m 1955
c_1 0_1475 11.99 0 2022-06-27 10:30:00 s_230001 m 1955

Chanegement du format de la date

##    client_id id_prod price categ             date session_id sex birth
## 33       c_1  0_1470 19.53     0 2021-06-11 21:02    s_47346   m  1955
## 15       c_1   0_513 11.99     0 2021-07-21 22:41    s_65433   m  1955
## 13       c_1  0_1186 12.30     0 2021-07-25 12:17    s_66947   m  1955
## 1        c_1  0_1448 18.94     0 2021-07-26 17:37    s_67467   m  1955
## 23       c_1  0_1475 11.99     0 2021-07-27 10:30    s_67769   m  1955
## 7        c_1  0_1378 13.96     0 2021-08-23 16:56    s_79696   m  1955

Addition de la colonne ‘year’

client_id id_prod price categ date session_id sex birth year
33 c_1 0_1470 19.53 0 2021-06-11 21:02 s_47346 m 1955 2021
15 c_1 0_513 11.99 0 2021-07-21 22:41 s_65433 m 1955 2021
13 c_1 0_1186 12.30 0 2021-07-25 12:17 s_66947 m 1955 2021
1 c_1 0_1448 18.94 0 2021-07-26 17:37 s_67467 m 1955 2021
23 c_1 0_1475 11.99 0 2021-07-27 10:30 s_67769 m 1955 2021

Nom des colonnes ayant non-definies dans leurs valeurs:

## character(0)
## [1] client_id  id_prod    price      categ      date       session_id sex       
## [8] birth      year      
## <0 lignes> (ou 'row.names' de longueur nulle)
## character(0)

Verification de la dublication de date de naissance pour chaque clien_id

## [1] 8600
## integer(0)
## [1] 8600

Verification de la variation de sex pour chaque clien_id

## [1] 8600
## integer(0)
## [1] 8600

Verification de la variation price pour chaque id_prod

## [1] 3265
## integer(0)
## [1] 0
## integer(0)

Verification de la variation sex pour chaque session_id

## [1] 342275
## integer(0)
## [1] 342275
## integer(0)

Le jeu des données prêt à l’analyse:

client_id id_prod price categ date session_id sex birth year
33 c_1 0_1470 19.53 0 2021-06-11 21:02 s_47346 m 1955 2021
15 c_1 0_513 11.99 0 2021-07-21 22:41 s_65433 m 1955 2021
13 c_1 0_1186 12.30 0 2021-07-25 12:17 s_66947 m 1955 2021
1 c_1 0_1448 18.94 0 2021-07-26 17:37 s_67467 m 1955 2021
23 c_1 0_1475 11.99 0 2021-07-27 10:30 s_67769 m 1955 2021
7 c_1 0_1378 13.96 0 2021-08-23 16:56 s_79696 m 1955 2021

Dictionnaire de nettoyage de données

Cette partie contient:

  • Les sources de données
  • La description et la nature des données
  • Description des outliers
  • Les mèthodes de mutation utilisés



Les sources de données:

  • customers.csv
  • products.csv
  • transactions.csv

Les données prêtes a être analysées:

client_id id_prod price categ date session_id sex birth year
33 c_1 0_1470 19.53 0 2021-06-11 21:02 s_47346 m 1955 2021
15 c_1 0_513 11.99 0 2021-07-21 22:41 s_65433 m 1955 2021
13 c_1 0_1186 12.30 0 2021-07-25 12:17 s_66947 m 1955 2021
1 c_1 0_1448 18.94 0 2021-07-26 17:37 s_67467 m 1955 2021
23 c_1 0_1475 11.99 0 2021-07-27 10:30 s_67769 m 1955 2021
7 c_1 0_1378 13.96 0 2021-08-23 16:56 s_79696 m 1955 2021

Outliers:

  • id_prod = ‘T_0’ : 200 lignes du fichier ‘transaction’ ==> verification de la fonctionnement du systeme

  • price = -1 : elimination car id_prod correspendant = ‘T_0’

Valeurs aberrantes pour le CA :

4 client_id et les chiffre d’affaire correspondants:

  • c_1609 — 324033.35 euros
  • c_4958 — 289760.34 euros
  • c_6714 — 153598.92 euros
  • c_3454 — 113637.93 euros

Chiffre d’affaire

Dans cette partie les différents indicateurs et graphiques autour du chiffre d’affaires sont présentés.
On a également étudié l’évolution dans le temps de CA et on a mis en place une décomposition en moyenne mobile pour évaluer la tendance globale.
Pour cette reason le repartition du CA est présenté par identifiant client.

Les sujets abordés:

  • Chiffre d’affaire total
  • La répartition du CA
  • L’étude des different types des comptes de client
  • L’évolution du chiffre d’affaire dans le temps
  • La tendance globale du chiffre d’affaires

Les statistiques et les méthodes utilisées:

  • Les statistiques univariées
  • La décomposition en moyenne mobile
  • La régression linéaire
  • Test ANOVA
  • Test de Kruskal-Wallis

Présentation du jeu de données

client_id id_prod price categ date session_id sex birth year
33 c_1 0_1470 19.53 0 2021-06-11 21:02 s_47346 m 1955 2021
15 c_1 0_513 11.99 0 2021-07-21 22:41 s_65433 m 1955 2021
13 c_1 0_1186 12.30 0 2021-07-25 12:17 s_66947 m 1955 2021
1 c_1 0_1448 18.94 0 2021-07-26 17:37 s_67467 m 1955 2021
23 c_1 0_1475 11.99 0 2021-07-27 10:30 s_67769 m 1955 2021
7 c_1 0_1378 13.96 0 2021-08-23 16:56 s_79696 m 1955 2021

Chiffre d’affaire total

## [1] 11853729

L’étude de chiffre d’affaires et sa répartittion

Creation d’une nouvelle table de CA pour chaque identifiant client
client_id CA_client
c_1 558.18
c_10 1353.60
c_100 254.85
c_1000 2261.89
c_1001 1812.86
c_1002 415.78
## [1] 11853729

Présentation graphique de la distribution du chiffre d’affaires

##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##      6.3    547.6   1027.0   1378.3   1779.5 324033.3

Observation de maximal chiffre d’affaire par client

##     client_id CA_client
## 678    c_1609  324033.3
client_id id_prod price categ date session_id sex birth year
74692 c_1609 0_1304 5.86 0 2021-03-01 00:07 s_7 m 1980 2021
60033 c_1609 0_1159 7.99 0 2021-03-01 00:11 s_7 m 1980 2021
71230 c_1609 0_1425 12.99 0 2021-03-01 01:56 s_46 m 1980 2021
53260 c_1609 0_1469 14.99 0 2021-03-01 02:12 s_53 m 1980 2021
50111 c_1609 1_406 24.81 1 2021-03-01 02:41 s_63 m 1980 2021
62064 c_1609 1_730 22.65 1 2021-03-01 02:44 s_53 m 1980 2021

Suppression des outliers (valeurs aberrantes maximales)

Il y a 4 client_id ayant les CA aberrantes maximales. Afin que notre analyse soit pertinant, on va éliminaire les valeurs aberrantes de nos données.

Comparaison de la distribution de CA par client avant et apres l’imputation.

  • avec les valeurs aberrantes:
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##      6.3    547.6   1027.0   1378.3   1779.5 324033.3
  • sans les valeurs aberrantes:
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    6.31  547.29 1026.85 1276.49 1778.32 5276.87

Distribution de chiffre d’affaire par client modifiée

Histogram des CA_client-s sans les valeurs aberrantes

Les nombres des clients et les CA correspendant au groupes principeaux

Les clients de grands comptes

## [1] 4158.43
## [1] 236

Les clients de comptes moyens

## [1] 1193.089
## [1] 8353

Les clients de très grands comptes

## [1] 220257.6
## [1] 4

L’écart-type de chiffre d’affaire

## [1] 954.1823

Skewness > 0, confirmation que la distribution est étalée à droit

## [1] 1.161649

kurtosis >3 => distribution leptokurtique : Majorité des chiffres d’affaire par client autours 500 eusros

## [1] 4.09493

L’évolution du chiffre d’affaire dans le temps

Creation d’une nouvelle table: L’évolution de CA dans le temps par mois

Evolution des MMC

Les coefficients saisoniers moyens par mois

Vérification de la somme des coefficients saisoniers Table de coefficients saisoniers ajustés

## [1] "La somme des coefficients saisoniers = 11.978"
Table de moyennes mobiles
month1 month CA_month MMC coeff_saisonier coeff_saisonier_ajustes ca_desaisonnalise
5 03 2021:03 445918.7 NA NA 0.9853714 452538.7
7 04 2021:04 439337.8 442628.3 0.9925662 0.9876262 444842.3
9 05 2021:05 454887.5 447112.7 1.0173889 1.0222932 444967.7
11 06 2021:06 447102.2 450994.8 0.9913688 0.9858446 453522.0
13 07 2021:07 447593.2 447347.7 1.0005488 1.0108458 442790.7
15 08 2021:08 446002.3 446797.7 0.9982197 0.9989492 446471.5
17 09 2021:09 470921.8 458462.0 1.0271773 1.0098188 466342.9
19 10 2021:10 296728.3 383825.1 0.7730822 0.8945075 331722.6
21 11 2021:11 478092.1 387410.2 1.2340720 1.1129784 429561.0
23 12 2021:12 487723.4 482907.7 1.0099722 1.0128541 481533.7
1 01 2022:01 488810.1 488266.7 1.0011128 1.0082187 484825.4
3 02 2022:02 492927.1 490868.6 1.0041936 0.9706921 507810.0
6 03 2022:03 476948.8 484938.0 0.9835254 0.9853714 484029.5
8 04 2022:04 457316.1 467132.5 0.9789859 0.9876262 463045.7
10 05 2022:05 479200.0 468258.0 1.0233674 1.0222932 468750.0
12 06 2022:06 457310.8 468255.4 0.9766268 0.9858446 463877.1
14 07 2022:07 473465.0 465387.9 1.0173556 1.0108458 468384.9
16 08 2022:08 469632.1 471548.5 0.9959359 0.9989492 470126.2
18 09 2022:09 459115.7 464373.9 0.9886768 1.0098188 454651.6
20 10 2022:10 470815.5 464965.6 1.0125813 0.8945075 526340.5
22 11 2022:11 459387.9 465101.7 0.9877150 1.1129784 412755.5
24 12 2022:12 470491.8 464939.9 1.0119412 1.0128541 464520.8
2 01 2023:01 481484.5 475988.2 1.0115472 1.0082187 477559.6
4 02 2023:02 421485.4 451485.0 0.9335536 0.9706921 434211.3

Nombre de lignes

## [1] 24

Evolution de CA désaisonnalisé

Realisation de la prévision grace à une droite de la régression linéaire. On utilise le méthode de moindre carrés.

a= coefficient directeur de notre regression linéaire : qoutient de covarience entre la sequence des nombre des mois et chiffres d’affaires desaisonnalisé par mois et varience de sequence des mois

b= ordonné à l’origine : la difference entre la moyenne de chiffres d’affaires desaisonnalisé et produit de coefficient directeur et moyenne de sequence des mois

## [1] "a:"
## [1] 1157.544
## [1] "b:"
## [1] 442829.9
## [1] 24
## [1] 24

Construction de la tendance

Tendance d’évaluation du chiffre d’affaires jusqu’a Fév. 2024 (si un résidu epsilon ne surgisse pas )


Repartition de Chiffre d’affaires par categories

categ CA
0 4119201
1 4349433
2 2504064

Problématique : évaluer la dépendence du chiffre d’affaire en fonction de la catégorie de livres

Choix du test : On a 2 variables: - chiffre d’affaires - variable quantitative continue - categorie de livre - variable qualitative avec plus que 2 groupes

Par conséquent le choix de notre test - test ANOVA avec le facteur = chiffre d’affaires, les groupes= 3 categories de livres

Anova, test de Ficher pour la repartition de CA par categories

Préparation de données

##   categ client_id  price
## 1     0       c_1 360.15
## 2     1       c_1 143.16
## 3     2       c_1  54.87
## 4     0      c_10 263.87
## 5     1      c_10 809.77
## 6     2      c_10 279.96

Modèle du test.

Problémathique: Est_ce que les chiffre d’affaires sont liés à categorie de livre?

L’hypothèse H0 : CA et categorie de livres sont indépendants

L’hypothèse H1 : CA et categorie sont liés

Méthodologie:

  • On mésure l’écart entre la variation intragroupe et variation intergroupe.
  • Utilisation de la statistique F(ratio).
  • Calcul de degré de liberté et définition de p-value.
  • Comparaison de F calculé avec F théorique

Interpretation:

  • si F calcule >F théorique, rejet de H0 => validation de H1. Donc CA est lié à la division en categories

soit

  • si p-value< alfa (coefficient de risque, standart 0,05), rejet de H0 => validation de H1, CA est lié à la division en categories

Application du Test

## Call:
##    aov(formula = price ~ categ, data = ag_ca)
## 
## Terms:
##                      categ  Residuals
## Sum of Squares    53456146 6425047257
## Deg. of Freedom          1      19932
## 
## Residual standard error: 567.7573
## Estimated effects may be unbalanced
##                Df    Sum Sq  Mean Sq F value Pr(>F)    
## categ           1 5.346e+07 53456146   165.8 <2e-16 ***
## Residuals   19932 6.425e+09   322348                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Vérification des conditions du test ANOVA:

  • Observations indépendqntes
  • Les données distribuées normalement(normalité des residus )
  • Pas de donées extêmes
  • Variances des groupes à peu près égales
  • Effectifs par classes à peu près égaux

Vérification sur la normalité des residus

Dans le graphique ci-dessous, les quantiles des résidus sont tracés par rapport aux quantiles de la distribution normale. Une ligne de référence de 45 degrés est également tracée.

La courbe de probabilité normale des résidus est utilisée pour vérifier l’hypothèse selon laquelle les résidus sont normalement répartis. Il devrait suivre approximativement une ligne droite qui correspend bien à la distribution normale.

On voit le décallage de notre probabilité normale des résidus. Cela signifie que nos résidus ne suivent pas une loi normale, donc la condition du test ANOVA n’est pas réspectée.

Dans ce cas on applique un test non-parametrique: ** Test de Kruskal-Wallis**

## # A tibble: 1 × 6
##   .y.       n statistic    df        p method        
## * <chr> <int>     <dbl> <int>    <dbl> <chr>         
## 1 price 19934      221.     2 1.21e-48 Kruskal-Wallis
## # A tibble: 1 × 5
##   .y.       n effsize method  magnitude
## * <chr> <int>   <dbl> <chr>   <ord>    
## 1 price 19934  0.0110 eta2[H] small

L’estimation eta-carré:

0,01- < 0,06 (petit effet), 0,06 - < 0,14 (effet modéré) et >= 0,14 (effet important).

Dans notre cas l’effet est minimal est presque égal à 0 .

**Conclusion:

Le chiffre d’affaire de depend pas de categorie de livres**

Références

L’étude sur les références était réalisé pour voir un peu les tops et les flops des ventes pendant 2 années, la répartition par catégorie et évolution des ventes.

Les sujets abordés :

  • Evolution de chiffre d’affaires en totalite et par categorie
  • Nombre des produits par categorie
  • Repartition de CA par jour et par categorie en Octobre 2021 (1er référence)
  • Repartition de CA par jour et par categorie en Fevrier 2023 (2ème référence)
  • Evaluation des chiffres d’affaires de chaque categorie pendant 2 ans

Présentation des données

client_id id_prod price categ date session_id sex birth year month
33 c_1 0_1470 19.53 0 2021-06-11 21:02 s_47346 m 1955 2021 06
15 c_1 0_513 11.99 0 2021-07-21 22:41 s_65433 m 1955 2021 07
13 c_1 0_1186 12.30 0 2021-07-25 12:17 s_66947 m 1955 2021 07
1 c_1 0_1448 18.94 0 2021-07-26 17:37 s_67467 m 1955 2021 07
23 c_1 0_1475 11.99 0 2021-07-27 10:30 s_67769 m 1955 2021 07
7 c_1 0_1378 13.96 0 2021-08-23 16:56 s_79696 m 1955 2021 08

Pivot table

Repartition de CA par jour et par categorie en Octobre 2021(notre flop)

client_id id_prod price categ date session_id sex birth year month
3 c_1 0_1429 7.99 0 15 s_105105 m 1955 2021 10
168 c_1000 0_1341 9.99 0 23 s_109124 f 1966 2021 10
132 c_1000 1_369 23.99 1 28 s_111262 f 1966 2021 10
109 c_1000 1_403 17.99 1 28 s_111262 f 1966 2021 10
258 c_1001 0_1473 15.99 0 18 s_106626 m 1982 2021 10
250 c_1001 0_1704 11.61 0 21 s_107908 m 1982 2021 10

Les chiffres d’affaires par jour et par categorie

Repartition de CA par jour et par categorie en Fevrier 2023(2eme flop)

Il n’y pas de forte fluctuation dans les categories en Fevrier 2023

Evaluation des chiffres d’affaires de chaque categorie

Profil client

Cette partie est consacrée au profile de clients et à l’étude de leur comportement.

Les sujets abordés :

  • La répartition du chiffre d’affaires entre les clients
  • La répartition des clients par categoire d’age
  • La répartition des clients par genre

Les méthodes et modèles utilisés:

  • La courbe de Lorenz
  • Le test Chi2

La répartition du chiffre d’affaires entre les clients

Niveau d’inegalite dans la repartition des CA par clients = 40%

## [1] "Indice de gini pour CA: 0.403 "

Fonction Courbe de Lorenz with plotly

Repartition des clients par categoire d’age

*Problématique :** évaluer la dépendence de la catégorie de livres en fonction de categroie d’age des clients

Choix du test : On a 2 variables:

  • categorie d’age - variable quantitative qualitative avec plus que 2 groupes

  • categorie de livre - variable qualitative avec plus que 2 groupes

Par conséquent le choix de notre test - test Chi2

Préparation de données

Définition de categorie d’age:

Junior: les clients plus jeunes que 25 ans

Adulte: les clients de 25 ans à 49 ans

Senior: les clients ayant plus de 49 ans

Aggregation du nombre d’achats par categorie d’age

##   categorie adulte junior senior
## 0         0 298059  10008  79214
## 1         1 101621  16538  94189
## 2         2  13776  17533   1539

Condition du test Chi2: au moins 5 éléments par case est respectée.

Test Chi2 pour les categories d’age et categoie de livres.

Modèle du test.

Problémathique: Est_ce que les achats dans chaque categorie de livres liés à categorie d’age?

L’hypothèse H0 : categorie d’age et categorie de livres sont indépendants

L’hypothèse H1 : categorie d’age et categorie de livres sont liés

Méthodologie:

  • Réalisation de tableau croisé avec les valeurs observée

  • Réalisation de tableau croisé avec les valeurs calculées

  • Comparaison de deux tableaux

  • Calcul de Chi2 et degré de liberté

  • Comparaison de Chi2 calculé et théorique correspendant au degré de liberté

soit

  • Comparaison de p-value et coefficient de risque (0,05)

Interpretation:

  • si Chi2 calcule > Chi2 théorique, rejet de H0 => validation de H1. Donc le choix de categorie de livre est lié à la categorie d’age

soit

  • si p-value< alfa (coefficient de risque, standart 0,05), rejet de H0 => validation de H1
## 
##  Pearson's Chi-squared test
## 
## data:  df_norm_age$categ_age and df_norm_age$categ
## X-squared = 168018, df = 4, p-value < 2.2e-16
##                      df_norm_age$categ
## df_norm_age$categ_age      0      1      2
##                adulte 298059 101621  13776
##                junior  10008  16538  17533
##                senior  79214  94189   1539
##                      df_norm_age$categ
## df_norm_age$categ_age         0         1         2
##                adulte 253169.13 138813.83 21473.038
##                junior  26990.64  14799.10  2289.264
##                senior 107121.23  58735.07  9085.698
## [1] 0.3644523

p-value< 0.05 alors la dependance existe.

Coefficient de Cramer= 36% => Le choix de categorie de livres depend de categorie d’age sur 36%

Repartition des clients par genre

##    client_id id_prod price categ             date session_id sex birth year
## 33       c_1  0_1470 19.53     0 2021-06-11 21:02    s_47346   m  1955 2021
## 15       c_1   0_513 11.99     0 2021-07-21 22:41    s_65433   m  1955 2021
## 13       c_1  0_1186 12.30     0 2021-07-25 12:17    s_66947   m  1955 2021
## 1        c_1  0_1448 18.94     0 2021-07-26 17:37    s_67467   m  1955 2021
## 23       c_1  0_1475 11.99     0 2021-07-27 10:30    s_67769   m  1955 2021
## 7        c_1  0_1378 13.96     0 2021-08-23 16:56    s_79696   m  1955 2021
##    month
## 33    06
## 15    07
## 13    07
## 1     07
## 23    07
## 7     08

Nombre des clients femmes et hommes

##   sex client_id
## 1   f    329104
## 2   m    303373

Les chiffres d’affaires apportés par les femmes et les hommes

##   sex   price percent
## 1   f 5706084    0.52
## 2   m 5266614    0.48



Liens entre les variables

Dans cette partie on a présenté les liens entre les différentes variables et on a étudié leurs corrélations.
Pour cela on a utilisé les différents modèles dont on a testé et interprété.

Les modèles de test appliqués dans cette partie:

  • Test Chi2
  • Test de Student et correlation
  • Régression linéaire
  • Test ANOVA
  1. Lien: genre et categories des livres

Choix du test : On a 2 variables: - genre - variable qualitative - categorie de livre - variable qualitative

Par conséquent le choix de notre test - test Chi2

##   categorie      f      m
## 0         0 200793 186488
## 1         1 111331 101017
## 2         2  16980  15868

Condition du test Chi2: au moins 5 éléments par case est respectée.

Test Chi2 pour les categories d’age et categoie de livres.

Modèle du test.

Problémathique: Est_ce que le genre de client et lié à categorie de livres?

L’hypothèse H0 : genre et categorie de livres sont indépendants

L’hypothèse H1 : genre et categorie de livres sont liés

Méthodologie:

  • Réalisation de tableau croisé avec les valeurs observée

  • Réalisation de tableau croisé avec les valeurs calculées

  • Comparaison de deux tableaux

  • Calcul de Chi2 et degré de liberté

  • Comparaison de Chi2 calculé et théorique correspendant au degré de liberté

soit

  • Comparaison de p-value et coefficient de risque (0,05)

Interpretation: *si Chi2 calcule > Chi2 théorique, rejet de H0 => validation de H1. Donc le choix de categorie de livre est lié à la categorie d’age

soit

*si p-value< alfa (coefficient de risque, standart 0,05), rejet de H0 => validation de H1

## 
##  Pearson's Chi-squared test
## 
## data:  df_norm_1$categ and df_norm_1$sex
## X-squared = 20.213, df = 2, p-value = 4.08e-05
##              df_norm_1$categ
## df_norm_1$sex      0      1      2
##             f 200793 111331  16980
##             m 186488 101017  15868
##              df_norm_1$categ
## df_norm_1$sex        0        1        2
##             f 201518.4 110493.5 17092.18
##             m 185762.6 101854.5 15755.82
## [1] 0.005653247

Les variables sont dependantes.

Coefficient de Cramer = 0.005653247 => lien faible

Conclusion: Le nombre d’achats dans chaque categorie de livres ne depend pas de genre des clients.

  1. Lien: Age - montant d’achats total

Choix du test : On a 2 variables: - age - variable quantitative discrete - montant d’achats total - quantitative continue

Par conséquent le choix de notre test - test de Student et correlation

Préparation des données:

##   age client_id  price
## 1  66       c_1 294.66
## 2  67       c_1 219.23
## 3  68       c_1  44.29
## 4  65      c_10 586.18
## 5  66      c_10 602.93
## 6  67      c_10 164.49

Moyen montat d’achat total par age

##   age    price
## 1  17 554.6341
## 2  18 670.0217
## 3  19 365.5685
## 4  20 482.5757
## 5  21 483.4038
## 6  22 479.2478

Le graphiaue sur les donnees ponderes

Application du test de correlation

## 
##  Pearson's product-moment correlation
## 
## data:  df_age2$age and df_age2$price
## t = -12.996, df = 76, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.8887448 -0.7457390
## sample estimates:
##        cor 
## -0.8304558

Coefficient de correlation de Pearson: r = -0.83

Il est négatif, donc les deux variables évoluent dans les sans opposé

Coefficient de détermination

## [1] 0.69

R au carre: 69% des variations de montats totales d’achats s’expliquent par l’age de client

Vérification si la regression est linéaire

## 
## Call:
## lm(formula = price ~ age, data = df_age2)
## 
## Coefficients:
## (Intercept)          age  
##     640.582       -4.318

-4.318*age +640.582

On peut effectuer le test Student pour savoir s’il y a une association linéaire significative entre 2 variables linéaires entre elles, c’est à dire est-ce que leur relation linéaire est le fruit du hasard ou est-ce qu’il y a une relation de cause à effet / de corrélation entre les deux.

Conditions du test Student: - les variables suivent la loi normale - pas de valeurs extremes - l’égalité de variances

Verification de normalite de chaque variable,

skewness et kurtosis

## [1] 0
## [1] 1.799605
## [1] 0.2101751
## [1] 1.906478

Lorsque la taille des échantillons est suffisamment grande (n >30), on peut ignorer le test de normalité sans problème majeur.

Verification d’égalité des variances:

## 
##  F test to compare two variances
## 
## data:  df_age2$age and df_age2$price
## F = 0.036991, num df = 77, denom df = 77, p-value < 2.2e-16
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.02358524 0.05801514
## sample estimates:
## ratio of variances 
##         0.03699055

P-value est plus petite que notre coefficient de risque= 0.05, donc l’hypothese que les variances des deux varibles sont egales est rejeté.Par consequent on ne peut pas utiliser le Test Student pour confirmer que le coefficient de correlation est statistiqument significatif. Il faut utiliser le test non-parametrique

  1. Lien : Age - frequence d’achats

Choix du test : On a 2 variables: - age - variable quantitative discrete - fréquencet d’achats - quantitative continue

Par conséquent le choix de notre test - correlation

Préparation des données:

##    client_id id_prod price categ             date session_id sex birth year
## 33       c_1  0_1470 19.53     0 2021-06-11 21:02    s_47346   m  1955 2021
## 15       c_1   0_513 11.99     0 2021-07-21 22:41    s_65433   m  1955 2021
## 13       c_1  0_1186 12.30     0 2021-07-25 12:17    s_66947   m  1955 2021
## 1        c_1  0_1448 18.94     0 2021-07-26 17:37    s_67467   m  1955 2021
## 23       c_1  0_1475 11.99     0 2021-07-27 10:30    s_67769   m  1955 2021
## 7        c_1  0_1378 13.96     0 2021-08-23 16:56    s_79696   m  1955 2021
##    month age categ_age
## 33    06  66    senior
## 15    07  66    senior
## 13    07  66    senior
## 1     07  66    senior
## 23    07  66    senior
## 7     08  66    senior

Moyen nombre d’achats par l’age

##   age nombre_d_achats
## 1  17        13.64368
## 2  18        16.78746
## 3  19         8.90939
## 4  20        12.07084
## 5  21        12.09270
## 6  22        12.34031

Vérification de normalité des variables

## [1] 0
## [1] 0.8781233
## [1] 1.799605
## [1] 2.35386

Lorsque la taille des échantillons est suffisamment grande (n >30), on peut ignorer le test de normalité sans problème majeur.

Verification d’égalité des variances:

## 
##  F test to compare two variances
## 
## data:  df_agef2$nombre_d_achats and df_agef2$age
## F = 0.22231, num df = 77, denom df = 77, p-value = 2.954e-10
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.1417484 0.3486736
## sample estimates:
## ratio of variances 
##          0.2223149

P-value est plus petit que notre coefficioent de risque= 0.05, donc L’hypothese que les variances sont egales est rejeté.Par consequent on ne peut pas utiliser le Test Student pour confirmer le lien entre nos variables statistiquement.

Application du test

## 
##  Pearson's product-moment correlation
## 
## data:  df_agef2$age and df_agef2$nombre_d_achats
## t = -2.4833, df = 76, p-value = 0.01522
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.4679558 -0.0547606
## sample estimates:
##       cor 
## -0.273953

Coefficient de correlation de Pearson: r = -0.27

Il est négatif, donc les deux variables évoluent dans les sans opposé

Coefficient de détermination

## [1] 0.08

Dependance est assez faible. 8% du nombre d’achats s’explique par l’age de client

Vérification si la regression est linéaire

## 
## Call:
## lm(formula = nombre_d_achats ~ age, data = df_agef2)
## 
## Coefficients:
## (Intercept)          age  
##     30.1836      -0.1292

La regression n’est pas lineaire.

  1. Lien: Age - la taille du panier moyen

Panier moyen de chaque client

##   age client_id montant_d_achats nombre_d_achats   panier
## 1  17    c_1042            59.74               2 29.87000
## 2  17    c_1046           454.94              16 28.43375
## 3  17    c_1065           670.44              16 41.90250
## 4  17    c_1088           283.43               7 40.49000
## 5  17     c_109            77.24               2 38.62000
## 6  17    c_1094           462.12              12 38.51000

Moyen panier par l’age

##   age   panier
## 1  17 41.64139
## 2  18 42.43934
## 3  19 44.65545
## 4  20 42.29798
## 5  21 43.46223
## 6  22 42.48517

Moyen panier par categorie d’age

##   categ_age client_id montant_d_achats nombre_d_achats   panier
## 1    adulte     c_100           254.85               8 31.85625
## 2    adulte    c_1001          1812.86             102 17.77314
## 3    adulte    c_1002           415.78              36 11.54944
## 4    adulte    c_1003          1209.84             105 11.52229
## 5    adulte    c_1004           928.60              59 15.73898
## 6    adulte    c_1006          3982.01             296 13.45274
##   categ_age   panier
## 1    adulte 20.61363
## 2    junior 41.66236
## 3    senior 16.44015

Verification de la normalite de distribution. skewness kurtosis

## [1] 1.615017
## [1] 3.808456

Lorsque la taille des échantillons est suffisamment grande (n >30), on peut ignorer le test de normalité sans problème majeur.

Verification d’égalité des variances:

## 
##  F test to compare two variances
## 
## data:  df_agep2$panier and df_agep2$age
## F = 0.21353, num df = 77, denom df = 77, p-value = 1.072e-10
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.1361488 0.3348998
## sample estimates:
## ratio of variances 
##          0.2135327

P-value est plus petit que notre coefficioent de risque= 0.05, donc L’hypothese que les variances sont egales est rejeté.Par consequent on ne peut pas utiliser le Test Student pour confirmer le lien entre nos variables statistiquement.

Correlation

## 
##  Pearson's product-moment correlation
## 
## data:  df_agep2$age and df_agep2$panier
## t = -6.3534, df = 76, p-value = 1.411e-08
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.7174672 -0.4217110
## sample estimates:
##        cor 
## -0.5889706
## [1] 0.35

Coefficient de determination 35%

La regression linéaire

## 
## Call:
## lm(formula = panier ~ age, data = df_agep2)
## 
## Coefficients:
## (Intercept)          age  
##     35.7333      -0.2722

Regression lineaire: 35.7333 - 0.2722 * age

  1. Lien: Age - categorie des livres

Problématique : évaluer la dépendence de la catégorie de livres en fonction d’age

Choix du test : On a 2 variables: - age - variable quantitative discrete - categorie de livre - variable qualitative avec plus que 2 groupes

Par conséquent le choix de notre test - test ANOVA avec le facteur = les achats total par age, les groupes= 3 categories de livres

Anova, test de Ficher

Préparation de données

##   age categ id_prod
## 1  17     0    1400
## 2  18     0    2118
## 3  19     0    1160
## 4  20     0     990
## 5  21     0    1052
## 6  22     0    1137
##    row col
## 93  77   4
##    age cat0 cat1 cat2
## 17  17 1400 2150 2385
## 18  18 2118 3721 3797
## 19  19 1160 2027 2221
## 20  20  990 1682 1758
## 21  21 1052 1574 1679
## 22  22 1137 1746 1831

la variable expliquée c’est la catégorie, et la variable explicative c’est l’age

Modèle du test.

Problémathique: Est_ce que les chiffre d’affaires sont liés à categorie de livre?

L’hypothèse H0 : CA et categorie de livres sont indépendants L’hypothèse H1 : CA et categorie sont liés

Méthodologie: * On mésure l’écart entre la variation intragroupe et variation intergroupe. * Utilisation de la statistique F(ratio). * Calcul de degré de liberté et définition de p-value. * Comparaison de F calculé avec F théorique

Interpretation: * si F calcule >F théorique, rejet de H0 => validation de H1. Donc CA est lié à la division en categories soit
* si p-value< alfa (coefficient de risque, standart 0,05), rejet de H0 => validation de H1, CA est lié à la division en categories

Application du Test

## Call:
##    aov(formula = id_prod ~ categ, data = age_prod)
## 
## Terms:
##                      categ  Residuals
## Sum of Squares   798124730 3041148238
## Deg. of Freedom          1        231
## 
## Residual standard error: 3628.38
## Estimated effects may be unbalanced
##              Df    Sum Sq   Mean Sq F value   Pr(>F)    
## categ         1 7.981e+08 798124730   60.62 2.31e-13 ***
## Residuals   231 3.041e+09  13165144                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Vérification des conditions du test ANOVA:

  • Observations indépendqntes
  • Les données distribuées normalement(normalité des residus )
  • Pas de donées extêmes
  • Variances des groupes à peu près égales
  • Effectifs par classes à peu près égaux

Vérification sur la normalité des residus

## Call:
##    aov(formula = id_prod ~ categ, data = age_prod)
## 
## Terms:
##                      categ  Residuals
## Sum of Squares   798124730 3041148238
## Deg. of Freedom          1        231
## 
## Residual standard error: 3628.38
## Estimated effects may be unbalanced

Dans le graphique ci-dessous, les quantiles des résidus sont tracés par rapport aux quantiles de la distribution normale. Une ligne de référence de 45 degrés est également tracée.

La courbe de probabilité normale des résidus est utilisée pour vérifier l’hypothèse selon laquelle les résidus sont normalement répartis. Il devrait suivre approximativement une ligne droite qui correspend bien à la distribution normale.

On voit le décallage de notre probabilité normale des résidus. Cela signifie que nos résidus ne suivent pas une loi normale, donc la condition du test ANOVA n’est pas réspectée. On realise un test de Kolmogorov-Smirnov pour vérifier plus présisement

## Warning in ks.test.default(age_prod$id_prod, "pnorm", mean(age_prod$id_prod), :
## aucun ex-aequo ne devrait être présent pour le test de Kolmogorov-Smirnov
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  age_prod$id_prod
## D = 0.25238, p-value = 2.575e-13
## alternative hypothesis: two-sided

Dans ce cas on applique un test non-parametrique: Test de Kruskal-Wallis

## # A tibble: 1 × 6
##   .y.         n statistic    df       p method        
## * <chr>   <int>     <dbl> <int>   <dbl> <chr>         
## 1 id_prod   233      98.1     2 4.9e-22 Kruskal-Wallis

L’estimation eta-carré:

0,01- < 0,06 (petit effet), 0,06 - < 0,14 (effet modéré) et >= 0,14 (effet important).

## # A tibble: 1 × 5
##   .y.         n effsize method  magnitude
## * <chr>   <int>   <dbl> <chr>   <ord>    
## 1 id_prod   233   0.418 eta2[H] large

Dans notre cas l’effet est 42 %:

La dépendence de la catégorie de livres en fonction d’age est 42%

Conclusion

Une analyse des différents indicateurs de vente

  • Chiffre d'affaire total approté par le site de vente en ligne sur les premiéres années est 11 853 729 euros. Ce qui fait 5,9 millions de chiffre d’affaire moyen annuel. Il est globalement stable

  • Chiffre d'affaire moyen par client fait 1276 ± 477 euros

  • Chiffre d'affaire le plus repandu par client est autour de 500 euros

  • Tendance d'évaluation de chiffre d'affaire dans le temps suit une regression linéaire : 442830 + 1158 * nombre de mois

  • 50% de chiffre d’affaires sont apportés par 23% de clients faisants des achats importants

  • Repartition du chiffre d'affaires ne depend pas de categorie de livres

Une analyse plus ciblée sur les clients

  • Concernant les clients, nous avons pu les segmenter en 3 grands groupes :

    • 8353 clients individuels, dont le chiffre d’affaires moyen généré est de 1193 euros.
    • 236 clients de “grands comptes”, dont le chiffre d’affaires moyen généré est de 4158 euros.
    • 4 clients de “très grands comptes”, dont le chiffre d’affaires moyen généré dépasse les 110 000 euros.



  • La proportion des hommes et des femmes représente 48% et 52%

  • Le choix de categorie de livre ne depend pas de genre du client

  • Montant total d’achats effectués diminue par rapport à l’augmentaion de l’age de client et suit la regression linéaire : 641 - 4.32 * age

  • La taille du panier moyen baisse avec l’age du client. La regression suivie: 35.7 - 0.27 * age

  • Le choix de catégorie de livres est défini à 36% par catégorie d’age de client



Les preferences de categorie de livres par les clients de differents groupes d’age




  • La taille du panier moyen des differentes catégories d’age:
    • les juniors (17-25) : 42 euros
    • les adultes (26-49) : 21 euros
    • les seniors (50+) : 16 euros


Les montants d’achats maximals par categorie d’age sur 24 mois d’analyse:

  • les juniors (17-25) : 4 643 euros
  • les adultes (26-49) : 5 276 euros
  • les seniors (50+) : 3 975 euros